package Demo07.Synchronized;
//解决线程安全问题的第一种方案：使用同步代码块
//格式：
//     synchronized(锁对象){
//          可能会出现线程安全问题的代码（访问了共享数据的代码）
//     }

public class RunnableImpl implements Runnable{
    private int ticket = 100;
    //创建一个锁对象
    Object obj = new Object();

    @Override
    public void run() {
        while(true){
            synchronized (obj){
                //
                if(ticket > 0){
                    //提高安全问题出现的概率，让程序睡眠
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName() + "正在卖第" + ticket + "张票");
                    ticket--;
                }
            }
        }

    }
}
